﻿// 使用事件机制，模拟实现一个闹钟功能。
// 闹钟可以有嘀嗒（Tick）事件和响铃（Alarm）两个事件。
// 在闹钟嘀嗒运行时或者响铃时，在控制台显示提示信息。
using System;
public delegate void EventHandler(object sender, EventArgs e);
public class Clock
{
    public event EventHandler Tick;
    public event EventHandler Alarm;

    public void Start()
    {
        Console.WriteLine("Clock started.");
        while (true)
        {
            // 触发 Tick 事件
            Tick?.Invoke(this, EventArgs.Empty);

            // 模拟时钟嘀嗒的等待时间
            System.Threading.Thread.Sleep(1000);

            // 触发 Alarm 事件
            Alarm?.Invoke(this, EventArgs.Empty);
        }
    }
}

public class Program
{
    public static void Main()
    {
        Clock clock = new Clock();

        // 订阅 Tick 事件
        clock.Tick += (sender, e) => Console.WriteLine("Tick!");

        // 订阅 Alarm 事件
        clock.Alarm += (sender, e) => Console.WriteLine("Alarm!");

        // 启动闹钟
        clock.Start();

        Console.ReadKey();
    }
}
